함수 중복

함수 중복의 편리함

  • 동일한 이름 사용 -> 함수 이름 구분할 필요 x, 함수 호출 실수 줄일 수 있음
  • 스크린샷 2024-04-08 오후 8.37.13.png

생성자 함수의 중복 사례

스크린샷 2024-04-08 오후 8.45.32.png

string 클래스의 함수 중복 사례

스크린샷 2024-04-08 오후 8.44.59.png

소멸자 함수는 중복 불가능

  • 소멸자는 매개변수를 가지지 않기 때문

형 변환으로 인한 함수 중복의 모호성

  • 스크린샷 2024-04-08 오후 9.01.58.png

참조 매개 변수로 인한 함수 중복의 모호성

  • 스크린샷 2024-04-08 오후 9.03.28.png

디폴트 매개 변수 default parameter

  • 매개 변수 값이 넘어오지 않는 경우, 디폴트 값을 받도록 선언된 매개변수
void star(int a = 5); //a의 디폴트 값은 5

star(); // 매개변수 a에 디폴트 값 5가 넘겨짐
star(10); // 매개변수 a에 10이 넘겨짐

디폴트 매개변수 값은 일반 매개 변수 앞에 선언될 수 없음

  • 디폴트 매개변수는 끝 쪽에 몰려 선언되어야 함
  • 스크린샷 2024-04-08 오후 8.51.07.png

Static 멤버와 non-Static 멤버

  • 개인 통장과 공유통장의 관계
    스크린샷 2024-04-08 오후 9.11.19.png

static 멤버와 non-static 멤버의 관계

스크린샷 2024-04-08 오후 9.11.55.png
스크린샷 2024-04-08 오후 9.12.36.png

클래스 명으로 static 변수 접근

  • 클래스 이름과 범위 지정자(::)로 접근 가능
    • 클래스마다 오직 한 개만 생성되기 때문
    • 스크린샷 2024-04-08 오후 9.30.38.png
  • non-static 멤버는 클래스 이름으로 접근 불가

static 변수의 주요 활용

  • 전역 변수나 함수를 클래스에 캡슐화
    • 전역 변수/ 함수를 최대한 사용하지 않도록
    • static으로 선언하여 클래스 멤버로 선언
Question.

클래스에 캡슐화를 하더라도 메모리 상에선 전역변수로 저장되는 거 아닌지 ?
만약에 그렇다면 똑같은 거 아닌지 ?

  • 객체 사이에 공유 변수를 만들고자 할 때
    • static을 사용하여 모든 객체가 공유

static 멤버함수는 static 멤버만 접근 가능

  • static 멤버 함수가 접근 가능한 것
    • static 멤버 함수
    • static 멤버 변수
    • 함수 내의 지역 변수
  • static 멤버 함수는 non-static 멤버에 접근 불가
    - 객체가 생성되지 않은 시점에서 static 멤버 함수가 호출될 수 있기 때문에
    스크린샷 2024-04-08 오후 9.42.29.png

non-static 멤버 함수는 static에 접근 가능

스크린샷 2024-04-08 오후 9.43.20.png

static 멤버는 this 사용 불가

  • static 멤버 함수는 객체가 생기기 전부터 호출 가능
    • static 멤버 함수는 this 사용 불가
    • static은 공유하는 함수인데 this는 각 객체가 자신을 가르키는 포인터이기 때문
    • 스크린샷 2024-04-08 오후 9.44.45.png